package com.zlsy.learning.leetcode.dahuashujujiegou.linklist;

import com.zlsy.learning.leetcode.linkedlist.l234.ListNode;

/**
 * @author zhouliang
 * @date 2020/8/8 9:12
 */
public class GetElem {
  /**
   * 大话数据结构-单链表的读取
   *
   * <p>初始条件：顺序线性表listNode已经存在，1<=1<=ListLength(L) 操作结果：用data返回第i个数据元素的值
   *
   * @param listNode 原始链表
   * @param i 第i个元素的值
   * @param data 用data返回
   * @return ListNode
   */
  private static ListNode getElem(ListNode listNode, int i, ListNode data) {
    ListNode cur = listNode;
    int j = 1;
    // 当链表还存在节点且j<i的时候就继续往下找
    while (cur != null && j < i) {
      cur = cur.next;
      j++;
    }
    if (cur == null || j > i) {
      return null;
    }

    data = cur;

    return data;
  }

  public static void main(String[] args) {
    ListNode listNode = new ListNode(1);
    listNode.add(2);
    listNode.add(3);

    ListNode elem = getElem(listNode, 2, null);
    if (elem != null) {
      elem.print();
    } else {
      System.out.println("未找到");
    }
  }
}
